<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>SystemSharp: SystemSharp.Assembler.DesignGen.MicrocodeControlpathBuilder Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">SystemSharp
   &#160;<span id="projectnumber">0.3</span>
   </div>
   <div id="projectbrief">A system-level modeling framework for designing real-time embedded systems</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="namespaces.html"><span>Packages</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('class_system_sharp_1_1_assembler_1_1_design_gen_1_1_microcode_controlpath_builder.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Properties</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Events</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="class_system_sharp_1_1_assembler_1_1_design_gen_1_1_microcode_controlpath_builder-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">SystemSharp.Assembler.DesignGen.MicrocodeControlpathBuilder Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>This control-path builder creates horizontally microcoded architectures (HMAs).  
 <a href="class_system_sharp_1_1_assembler_1_1_design_gen_1_1_microcode_controlpath_builder.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for SystemSharp.Assembler.DesignGen.MicrocodeControlpathBuilder:</div>
<div class="dyncontent">
 <div class="center">
  <img src="class_system_sharp_1_1_assembler_1_1_design_gen_1_1_microcode_controlpath_builder.png" usemap="#SystemSharp.Assembler.DesignGen.MicrocodeControlpathBuilder_map" alt=""/>
  <map id="SystemSharp.Assembler.DesignGen.MicrocodeControlpathBuilder_map" name="SystemSharp.Assembler.DesignGen.MicrocodeControlpathBuilder_map">
<area href="interface_system_sharp_1_1_assembler_1_1_design_gen_1_1_i_controlpath_builder.html" title="Generic interface of control path construction algorithms " alt="SystemSharp.Assembler.DesignGen.IControlpathBuilder" shape="rect" coords="0,0,385,24"/>
</map>
 </div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a9adbf4fe014b13a3db6a9068586aeb50"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_assembler_1_1_design_gen_1_1_microcode_controlpath_builder.html#a9adbf4fe014b13a3db6a9068586aeb50">PersonalizePlan</a> (<a class="el" href="class_system_sharp_1_1_analysis_1_1_m2_m_1_1_h_l_s_plan.html">HLSPlan</a> plan)</td></tr>
<tr class="memdesc:a9adbf4fe014b13a3db6a9068586aeb50"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method is called at a very early stage. It gives the control path builder a chance to customize the synthesis plan. It might be especially required to define the way how conditional and unconditional branches are mapped to functional units, since these need to interact tightly with the controller.  <a href="#a9adbf4fe014b13a3db6a9068586aeb50">More...</a><br/></td></tr>
<tr class="separator:a9adbf4fe014b13a3db6a9068586aeb50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07295938e74618105d7d2b3a7ce5e390"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_assembler_1_1_design_gen_1_1_microcode_controlpath_builder.html#a07295938e74618105d7d2b3a7ce5e390">PrepareAllocation</a> (long cstepCount)</td></tr>
<tr class="memdesc:a07295938e74618105d7d2b3a7ce5e390"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method is called prior to resource allocation, after scheduling. It notifies the control path builder on the number of c-steps to let it prepare according data structures.  <a href="#a07295938e74618105d7d2b3a7ce5e390">More...</a><br/></td></tr>
<tr class="separator:a07295938e74618105d7d2b3a7ce5e390"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa84dbf688bde2f1ab794937ca1eb8689"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_assembler_1_1_design_gen_1_1_microcode_controlpath_builder.html#aa84dbf688bde2f1ab794937ca1eb8689">CreateControlpath</a> (<a class="el" href="class_system_sharp_1_1_assembler_1_1_flow_matrix.html">FlowMatrix</a> flowSpec, string procName)</td></tr>
<tr class="memdesc:aa84dbf688bde2f1ab794937ca1eb8689"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates the actual controller hardware based on the flow matrix  <a href="#aa84dbf688bde2f1ab794937ca1eb8689">More...</a><br/></td></tr>
<tr class="separator:aa84dbf688bde2f1ab794937ca1eb8689"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:ae9c92ad7c37ba4805acb684b3bfbaffe"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="interface_system_sharp_1_1_assembler_1_1_design_gen_1_1_i_controlpath_builder_factory.html">IControlpathBuilderFactory</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_assembler_1_1_design_gen_1_1_microcode_controlpath_builder.html#ae9c92ad7c37ba4805acb684b3bfbaffe">CreateFactory</a> (int maxSelWidth=6, bool staged=false, bool registered=false)</td></tr>
<tr class="memdesc:ae9c92ad7c37ba4805acb684b3bfbaffe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a factory for creating instances of this class, using a user-defined configuration.  <a href="#ae9c92ad7c37ba4805acb684b3bfbaffe">More...</a><br/></td></tr>
<tr class="separator:ae9c92ad7c37ba4805acb684b3bfbaffe"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:ad986dda61e1d9e735a485c72b66ad327"><td class="memItemLeft" align="right" valign="top">static readonly <br class="typebreak"/>
<a class="el" href="interface_system_sharp_1_1_assembler_1_1_design_gen_1_1_i_controlpath_builder_factory.html">IControlpathBuilderFactory</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_system_sharp_1_1_assembler_1_1_design_gen_1_1_microcode_controlpath_builder.html#ad986dda61e1d9e735a485c72b66ad327">Factory</a> = new FactoryImpl(6, false, false)</td></tr>
<tr class="memdesc:ad986dda61e1d9e735a485c72b66ad327"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a factory for creating instances of this class, using the default configuration <code>maxSelWidth = 6</code>, <code>staged = false</code>, <code>registered = false</code>.  <a href="#ad986dda61e1d9e735a485c72b66ad327">More...</a><br/></td></tr>
<tr class="separator:ad986dda61e1d9e735a485c72b66ad327"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>This control-path builder creates horizontally microcoded architectures (HMAs). </p>

<p>Definition at line <a class="el" href="_microcode_controlpath_builder_8cs_source.html#l00038">38</a> of file <a class="el" href="_microcode_controlpath_builder_8cs_source.html">MicrocodeControlpathBuilder.cs</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="aa84dbf688bde2f1ab794937ca1eb8689"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void SystemSharp.Assembler.DesignGen.MicrocodeControlpathBuilder.CreateControlpath </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_system_sharp_1_1_assembler_1_1_flow_matrix.html">FlowMatrix</a>&#160;</td>
          <td class="paramname"><em>flowSpec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">string&#160;</td>
          <td class="paramname"><em>procName</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Creates the actual controller hardware based on the flow matrix </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">flowSpec</td><td>flow matrix describing the timed dataflows between functional units and registers</td></tr>
    <tr><td class="paramname">procName</td><td>a unique name which may be used to prefix model elements which are created by the algorithm (to avoid naming collisions)</td></tr>
  </table>
  </dd>
</dl>

<p>Implements <a class="el" href="interface_system_sharp_1_1_assembler_1_1_design_gen_1_1_i_controlpath_builder.html#aef95285ce8bd8c38079390dc9af21d39">SystemSharp.Assembler.DesignGen.IControlpathBuilder</a>.</p>

<p>Definition at line <a class="el" href="_microcode_controlpath_builder_8cs_source.html#l00191">191</a> of file <a class="el" href="_microcode_controlpath_builder_8cs_source.html">MicrocodeControlpathBuilder.cs</a>.</p>

</div>
</div>
<a class="anchor" id="ae9c92ad7c37ba4805acb684b3bfbaffe"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="interface_system_sharp_1_1_assembler_1_1_design_gen_1_1_i_controlpath_builder_factory.html">IControlpathBuilderFactory</a> SystemSharp.Assembler.DesignGen.MicrocodeControlpathBuilder.CreateFactory </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>maxSelWidth</em> = <code>6</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>staged</em> = <code>false</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>registered</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Creates a factory for creating instances of this class, using a user-defined configuration. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">maxSelWidth</td><td>maximum admissible selection input width of a control-word decoder</td></tr>
    <tr><td class="paramname">staged</td><td>A staged control-word decoder introduces an additional register at the decoding output, allowing for faster clock speeds.</td></tr>
    <tr><td class="paramname">registered</td><td>Whether to insert an additional register inside the staged decoder - only meaningful if <em>staged</em>  is <code>true</code>.</td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="_microcode_controlpath_builder_8cs_source.html#l00073">73</a> of file <a class="el" href="_microcode_controlpath_builder_8cs_source.html">MicrocodeControlpathBuilder.cs</a>.</p>

</div>
</div>
<a class="anchor" id="a9adbf4fe014b13a3db6a9068586aeb50"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void SystemSharp.Assembler.DesignGen.MicrocodeControlpathBuilder.PersonalizePlan </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_system_sharp_1_1_analysis_1_1_m2_m_1_1_h_l_s_plan.html">HLSPlan</a>&#160;</td>
          <td class="paramname"><em>plan</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This method is called at a very early stage. It gives the control path builder a chance to customize the synthesis plan. It might be especially required to define the way how conditional and unconditional branches are mapped to functional units, since these need to interact tightly with the controller. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">plan</td><td></td></tr>
  </table>
  </dd>
</dl>

<p>Implements <a class="el" href="interface_system_sharp_1_1_assembler_1_1_design_gen_1_1_i_controlpath_builder.html#a654b740d0299b7fe769328ac8b9e6c3b">SystemSharp.Assembler.DesignGen.IControlpathBuilder</a>.</p>

<p>Definition at line <a class="el" href="_microcode_controlpath_builder_8cs_source.html#l00139">139</a> of file <a class="el" href="_microcode_controlpath_builder_8cs_source.html">MicrocodeControlpathBuilder.cs</a>.</p>

</div>
</div>
<a class="anchor" id="a07295938e74618105d7d2b3a7ce5e390"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void SystemSharp.Assembler.DesignGen.MicrocodeControlpathBuilder.PrepareAllocation </td>
          <td>(</td>
          <td class="paramtype">long&#160;</td>
          <td class="paramname"><em>cstepCount</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This method is called prior to resource allocation, after scheduling. It notifies the control path builder on the number of c-steps to let it prepare according data structures. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">cstepCount</td><td>number of c-steps which were determined by scheduling</td></tr>
  </table>
  </dd>
</dl>

<p>Implements <a class="el" href="interface_system_sharp_1_1_assembler_1_1_design_gen_1_1_i_controlpath_builder.html#a7ffcd3c97aa898a19e9cb9c58edc44ec">SystemSharp.Assembler.DesignGen.IControlpathBuilder</a>.</p>

<p>Definition at line <a class="el" href="_microcode_controlpath_builder_8cs_source.html#l00184">184</a> of file <a class="el" href="_microcode_controlpath_builder_8cs_source.html">MicrocodeControlpathBuilder.cs</a>.</p>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="ad986dda61e1d9e735a485c72b66ad327"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">readonly <a class="el" href="interface_system_sharp_1_1_assembler_1_1_design_gen_1_1_i_controlpath_builder_factory.html">IControlpathBuilderFactory</a> SystemSharp.Assembler.DesignGen.MicrocodeControlpathBuilder.Factory = new FactoryImpl(6, false, false)</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns a factory for creating instances of this class, using the default configuration <code>maxSelWidth = 6</code>, <code>staged = false</code>, <code>registered = false</code>. </p>

<p>Definition at line <a class="el" href="_microcode_controlpath_builder_8cs_source.html#l00063">63</a> of file <a class="el" href="_microcode_controlpath_builder_8cs_source.html">MicrocodeControlpathBuilder.cs</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="_microcode_controlpath_builder_8cs_source.html">MicrocodeControlpathBuilder.cs</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespace_system_sharp.html">SystemSharp</a></li><li class="navelem"><a class="el" href="namespace_system_sharp_1_1_assembler.html">Assembler</a></li><li class="navelem"><a class="el" href="namespace_system_sharp_1_1_assembler_1_1_design_gen.html">DesignGen</a></li><li class="navelem"><a class="el" href="class_system_sharp_1_1_assembler_1_1_design_gen_1_1_microcode_controlpath_builder.html">MicrocodeControlpathBuilder</a></li>
    <li class="footer">Generated on Thu Dec 26 2013 14:21:56 for SystemSharp by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
  </ul>
</div>
</body>
</html>
